﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PROFIP.Persistence.DTO.Scales;

namespace PROFIP
{
    public partial class PANSSForm : ScaleForm 
    {
        public PANSSForm(MainForm mainForm, PANSSDTO dto, int avaliationSheetIndex) : base(mainForm, dto, avaliationSheetIndex)
        {
            InitializeComponent();
            if (dto == null) return;
            //Positivos
            IdeiasDelirantes.SelectedIndex = dto.IdeiasDelirantes;
            DesorganizacaoConceptual.SelectedIndex = dto.DesorganizacaoConceptual;
            Alucinacoes.SelectedIndex = dto.Alucinacoes;
            AgitacaoPsicomotora.SelectedIndex = dto.AgitacaoPsicomotora;
            Megalomania.SelectedIndex = dto.Megalomania;
            Desconfianca.SelectedIndex = dto.Desconfianca;
            Hostilidade.SelectedIndex = dto.Hostilidade;
            //Negativos
            EmbotamentoAfectivo.SelectedIndex = dto.EmbotamentoAfectivo;
            RetraimentoAfectivo.SelectedIndex = dto.RetraimentoAfectivo;
            PobrezaDeContacto.SelectedIndex = dto.PobrezaDeContacto;
            PassividadeApatiaIsolamento.SelectedIndex = dto.PassividadeApatiaIsolamento;
            DificuldadePensamentoAbstracto.SelectedIndex = dto.DificuldadePensamentoAbstracto;
            FaltaDeEspontaneadadeEFluidezNoDiscurso.SelectedIndex = dto.FaltaDeEspontaneadadeEFluidezNoDiscurso;
            PensamentoEstereotipado.SelectedIndex = dto.PensamentoEstereotipado;
            //Geral
            PreocupacaoSomatica.SelectedIndex = dto.PreocupacaoSomatica;
            Ansiedade.SelectedIndex = dto.Ansiedade;
            SentimentoDeCulpa.SelectedIndex = dto.SentimentoDeCulpa;
            Tensao.SelectedIndex = dto.Tensao;
            ManeirismosEAltDaPostura.SelectedIndex = dto.ManeirismosEAltDaPostura;
            Depressao.SelectedIndex = dto.Depressao;
            LentificacaoMotora.SelectedIndex = dto.LentificacaoMotora;
            FaltaDeCooperacao.SelectedIndex = dto.FaltaDeCooperacao;
            AltDoConteudoDoPensamento.SelectedIndex = dto.AltDoConteudoDoPensamento;
            Desorientacao.SelectedIndex = dto.Desorientacao;
            ReducaoDaAtencao.SelectedIndex = dto.ReducaoDaAtencao;
            CapacidadeCriticaEInsight.SelectedIndex = dto.CapacidadeCriticaEInsight;
            PerturbacaoDaVolicao.SelectedIndex = dto.PerturbacaoDaVolicao;
            ReducaoControloDosImpulsos.SelectedIndex = dto.ReducaoControloDosImpulsos;
            Preocupacao.SelectedIndex = dto.Preocupacao;
            EvitamentoSocialActivo.SelectedIndex = dto.EvitamentoSocialActivo;
            Application.DoEvents();
        }

        private void onClose(object sender, FormClosingEventArgs e)
        {
            PANSSDTO dto = new PANSSDTO();
            dto.IdeiasDelirantes = IdeiasDelirantes.SelectedIndex;
            dto.DesorganizacaoConceptual = DesorganizacaoConceptual.SelectedIndex;
            dto.Alucinacoes = Alucinacoes.SelectedIndex;
            dto.AgitacaoPsicomotora = AgitacaoPsicomotora.SelectedIndex;
            dto.Megalomania = Megalomania.SelectedIndex;
            dto.Desconfianca = Desconfianca.SelectedIndex;
            dto.Hostilidade = Hostilidade.SelectedIndex;
            dto.EmbotamentoAfectivo = EmbotamentoAfectivo.SelectedIndex;
            dto.RetraimentoAfectivo = RetraimentoAfectivo.SelectedIndex;
            dto.PobrezaDeContacto = PobrezaDeContacto.SelectedIndex;
            dto.PassividadeApatiaIsolamento = PassividadeApatiaIsolamento.SelectedIndex;
            dto.DificuldadePensamentoAbstracto = DificuldadePensamentoAbstracto.SelectedIndex;
            dto.FaltaDeEspontaneadadeEFluidezNoDiscurso = FaltaDeEspontaneadadeEFluidezNoDiscurso.SelectedIndex;
            dto.PensamentoEstereotipado = PensamentoEstereotipado.SelectedIndex;
            dto.PreocupacaoSomatica = PreocupacaoSomatica.SelectedIndex;
            dto.Ansiedade = Ansiedade.SelectedIndex;
            dto.SentimentoDeCulpa = SentimentoDeCulpa.SelectedIndex;
            dto.Tensao = Tensao.SelectedIndex;
            dto.ManeirismosEAltDaPostura = ManeirismosEAltDaPostura.SelectedIndex;
            dto.Depressao = Depressao.SelectedIndex;
            dto.LentificacaoMotora = LentificacaoMotora.SelectedIndex;
            dto.FaltaDeCooperacao = FaltaDeCooperacao.SelectedIndex;
            dto.AltDoConteudoDoPensamento = AltDoConteudoDoPensamento.SelectedIndex;
            dto.Desorientacao = Desorientacao.SelectedIndex;
            dto.ReducaoDaAtencao = ReducaoDaAtencao.SelectedIndex;
            dto.CapacidadeCriticaEInsight = CapacidadeCriticaEInsight.SelectedIndex;
            dto.PerturbacaoDaVolicao = PerturbacaoDaVolicao.SelectedIndex;
            dto.ReducaoControloDosImpulsos = ReducaoControloDosImpulsos.SelectedIndex;
            dto.Preocupacao = Preocupacao.SelectedIndex;
            dto.EvitamentoSocialActivo = EvitamentoSocialActivo.SelectedIndex;
            base.mainForm.updatePANSS(dto, base.avaliationSheetIndex);
        }

        private void Positivo_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<ComboBox> boxes = new List<ComboBox>();
            boxes.Add(IdeiasDelirantes);
            boxes.Add(DesorganizacaoConceptual);
            boxes.Add(Alucinacoes);
            boxes.Add(AgitacaoPsicomotora);
            boxes.Add(Megalomania);
            boxes.Add(Desconfianca);
            boxes.Add(Hostilidade);

            int scorePositivo = 0;
            int countGT3 = 0;
            foreach (ComboBox box in boxes)
            {
                if (box.SelectedIndex + 1 > 3)
                {
                    countGT3++;
                }
                scorePositivo += box.SelectedIndex + 1;
            }
            ScoreEscalaPositiva.Text = scorePositivo + "";
            NumeroSintomasPositivosGT3.Text = countGT3 + "";
        }

        private void Negativo_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<ComboBox> boxes = new List<ComboBox>();
            boxes.Add(EmbotamentoAfectivo);
            boxes.Add(RetraimentoAfectivo);
            boxes.Add(PobrezaDeContacto);
            boxes.Add(PassividadeApatiaIsolamento);
            boxes.Add(DificuldadePensamentoAbstracto);
            boxes.Add(FaltaDeEspontaneadadeEFluidezNoDiscurso);
            boxes.Add(PensamentoEstereotipado);

            int scoreNegativo = 0;
            int countGT3 = 0;
            foreach (ComboBox box in boxes)
            {
                if (box.SelectedIndex + 1 > 3)
                {
                    countGT3++;
                }
                scoreNegativo += box.SelectedIndex + 1;
            }
            ScoreEscalaNegativa.Text = scoreNegativo + "";
            NumeroSintomasNegativosGT3.Text = countGT3 + "";
        }

        private void Geral_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<ComboBox> boxes = new List<ComboBox>();
            boxes.Add(PreocupacaoSomatica);
            boxes.Add(Ansiedade);
            boxes.Add(SentimentoDeCulpa);
            boxes.Add(Tensao);
            boxes.Add(ManeirismosEAltDaPostura);
            boxes.Add(Depressao);
            boxes.Add(LentificacaoMotora);
            boxes.Add(FaltaDeCooperacao);
            boxes.Add(AltDoConteudoDoPensamento);
            boxes.Add(Desorientacao);
            boxes.Add(ReducaoDaAtencao);
            boxes.Add(CapacidadeCriticaEInsight);
            boxes.Add(PerturbacaoDaVolicao);
            boxes.Add(ReducaoControloDosImpulsos);
            boxes.Add(Preocupacao);
            boxes.Add(EvitamentoSocialActivo);

            int scoreGeral = 0;
            foreach (ComboBox box in boxes)
            {
                scoreGeral += box.SelectedIndex + 1;
            }
            ScoreGeral.Text = scoreGeral + "";
        }

        public String GetScorePositivo()
        {
            if (ScoreEscalaPositiva.Text.Length == 0)
                return "0";

            return ScoreEscalaPositiva.Text;
        }

        public String GetScoreNegativo()
        {
            if (ScoreEscalaNegativa.Text.Length == 0)
                return "0";

            return ScoreEscalaNegativa.Text;
        }

        public String GetScoreGeral()
        {
            if (ScoreGeral.Text.Length == 0)
                return "0";

            return ScoreGeral.Text;
        }

        public String GetTipoSintomatologico()
        {
            int sintomasPositivos = 0;
            if (NumeroSintomasPositivosGT3.Text.Trim().Length > 0)
            {
                sintomasPositivos = int.Parse(NumeroSintomasPositivosGT3.Text);
            }

            int sintomasNegativos = 0;
            if (NumeroSintomasNegativosGT3.Text.Trim().Length > 0)
            {
                sintomasNegativos = int.Parse(NumeroSintomasNegativosGT3.Text);
            }

            if (sintomasPositivos >= 3 && sintomasNegativos < 3)
            {
                return "Positivo";
            }
            if (sintomasNegativos >= 3 && sintomasPositivos < 3)
            {
                return "Negativo";
            }
            if (sintomasPositivos >= 3 && sintomasNegativos >= 3)
            {
                return "Misto";
            }
            return "Nenhum tipo";

        }

    }
}
